Searching
for a Subchunk
The following
example uses the mmioDescend
function to search for the FMT chunk in the RIFF chunk of the previous
example.
// Find the format chunk (form type
"FMT"); it should be
// a subchunk of the "RIFF" parent chunk.
mmckinfoSubchunk.ckid = mmioFOURCC('f', 'm', 't', '
');
if (mmioDescend(hmmio, &mmckinfoSubchunk,
&mmckinfoParent,
MMIO_FINDCHUNK))
// Error,
cannot find the "FMT" chunk.
else
//
"FMT" chunk found.
To search for
a subchunk (that is, any chunk other than a RIFF or LIST chunk), identify
its parent chunk in the lpckParent parameter of the mmioDescend function.
If you do not
specify a parent chunk, the current file position should be at the beginning of
a chunk before you call the mmioDescend function. If you do specify a
parent chunk, the current file position can be anywhere in that chunk.
If the search
for a subchunk fails, the current file position is undefined. You can use the mmioSeek function and the dwDataOffset
member of the MMCKINFO
structure describing the parent chunk to seek back to the beginning of the
parent chunk, as in the following example:
mmioSeek(hmmio, mmckinfoParent.dwDataOffset + 4,
SEEK_SET);
Because dwDataOffset
specifies the offset to the beginning of the data portion of the chunk, you
must seek 4 bytes past dwDataOffset to set the file position after the
form type.